{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import yfinance as yf\n",
    "import seaborn as sns\n",
    "from sklearn import linear_model\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.neural_network import MLPClassifier\n",
    "import datetime\n",
    "import backtrader as bt\n",
    "from backtrader.feeds import PandasData\n",
    "import backtrader.analyzers as btanalyzers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.style.use('seaborn-colorblind')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[*********************100%***********************]  1 of 1 completed\n"
     ]
    }
   ],
   "source": [
    "ticker = 'NIO'\n",
    "start = datetime.datetime(2020, 1, 1)\n",
    "end = datetime.datetime(2020, 12, 30)\n",
    "stock = yf.download(ticker, progress=True, actions=True, start=start, end=end)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Adj Close</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-12-31</th>\n",
       "      <td>4.020000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>3.720000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>3.830000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>3.680000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>3.240000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-22</th>\n",
       "      <td>47.580002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-23</th>\n",
       "      <td>47.009998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-24</th>\n",
       "      <td>45.770000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>44.060001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>46.139999</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            Adj Close\n",
       "Date                 \n",
       "2019-12-31   4.020000\n",
       "2020-01-02   3.720000\n",
       "2020-01-03   3.830000\n",
       "2020-01-06   3.680000\n",
       "2020-01-07   3.240000\n",
       "...               ...\n",
       "2020-12-22  47.580002\n",
       "2020-12-23  47.009998\n",
       "2020-12-24  45.770000\n",
       "2020-12-28  44.060001\n",
       "2020-12-29  46.139999\n",
       "\n",
       "[252 rows x 1 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock = stock['Adj Close']\n",
    "stock = pd.DataFrame(stock)\n",
    "stock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stock.rename(columns={\"Adj Close\": ticker}, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NIO</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-12-31</th>\n",
       "      <td>4.02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>3.72</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>3.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>3.68</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             NIO\n",
       "Date            \n",
       "2019-12-31  4.02\n",
       "2020-01-02  3.72\n",
       "2020-01-03  3.83\n",
       "2020-01-06  3.68"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock.head(4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stock['returns'] = np.log(stock/stock.shift(1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NIO</th>\n",
       "      <th>returns</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-12-31</th>\n",
       "      <td>4.020000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>3.720000</td>\n",
       "      <td>-0.077558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>3.830000</td>\n",
       "      <td>0.029141</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>3.680000</td>\n",
       "      <td>-0.039952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>3.240000</td>\n",
       "      <td>-0.127339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-22</th>\n",
       "      <td>47.580002</td>\n",
       "      <td>-0.028387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-23</th>\n",
       "      <td>47.009998</td>\n",
       "      <td>-0.012052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-24</th>\n",
       "      <td>45.770000</td>\n",
       "      <td>-0.026731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>44.060001</td>\n",
       "      <td>-0.038076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>46.139999</td>\n",
       "      <td>0.046128</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>252 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  NIO   returns\n",
       "Date                           \n",
       "2019-12-31   4.020000       NaN\n",
       "2020-01-02   3.720000 -0.077558\n",
       "2020-01-03   3.830000  0.029141\n",
       "2020-01-06   3.680000 -0.039952\n",
       "2020-01-07   3.240000 -0.127339\n",
       "...               ...       ...\n",
       "2020-12-22  47.580002 -0.028387\n",
       "2020-12-23  47.009998 -0.012052\n",
       "2020-12-24  45.770000 -0.026731\n",
       "2020-12-28  44.060001 -0.038076\n",
       "2020-12-29  46.139999  0.046128\n",
       "\n",
       "[252 rows x 2 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stock.dropna(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "stock['direction'] = np.sign(stock['returns']).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NIO</th>\n",
       "      <th>returns</th>\n",
       "      <th>direction</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>3.720000</td>\n",
       "      <td>-0.077558</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>3.830000</td>\n",
       "      <td>0.029141</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>3.680000</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>3.240000</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>3.390000</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-22</th>\n",
       "      <td>47.580002</td>\n",
       "      <td>-0.028387</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-23</th>\n",
       "      <td>47.009998</td>\n",
       "      <td>-0.012052</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-24</th>\n",
       "      <td>45.770000</td>\n",
       "      <td>-0.026731</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-28</th>\n",
       "      <td>44.060001</td>\n",
       "      <td>-0.038076</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-12-29</th>\n",
       "      <td>46.139999</td>\n",
       "      <td>0.046128</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>251 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  NIO   returns  direction\n",
       "Date                                      \n",
       "2020-01-02   3.720000 -0.077558         -1\n",
       "2020-01-03   3.830000  0.029141          1\n",
       "2020-01-06   3.680000 -0.039952         -1\n",
       "2020-01-07   3.240000 -0.127339         -1\n",
       "2020-01-08   3.390000  0.045257          1\n",
       "...               ...       ...        ...\n",
       "2020-12-22  47.580002 -0.028387         -1\n",
       "2020-12-23  47.009998 -0.012052         -1\n",
       "2020-12-24  45.770000 -0.026731         -1\n",
       "2020-12-28  44.060001 -0.038076         -1\n",
       "2020-12-29  46.139999  0.046128          1\n",
       "\n",
       "[251 rows x 3 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NIO</th>\n",
       "      <th>returns</th>\n",
       "      <th>direction</th>\n",
       "      <th>rnt_lag1</th>\n",
       "      <th>rnt_lag2</th>\n",
       "      <th>rnt_lag3</th>\n",
       "      <th>rnt_lag4</th>\n",
       "      <th>rnt_lag5</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>3.46</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>1</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>0.029141</td>\n",
       "      <td>-0.077558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>3.51</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>1</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>0.029141</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>3.70</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>1</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>3.76</td>\n",
       "      <td>0.016086</td>\n",
       "      <td>1</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>4.29</td>\n",
       "      <td>0.131868</td>\n",
       "      <td>1</td>\n",
       "      <td>0.016086</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             NIO   returns  direction  rnt_lag1  rnt_lag2  rnt_lag3  rnt_lag4  \\\n",
       "Date                                                                            \n",
       "2020-01-09  3.46  0.020439          1  0.045257 -0.127339 -0.039952  0.029141   \n",
       "2020-01-10  3.51  0.014347          1  0.020439  0.045257 -0.127339 -0.039952   \n",
       "2020-01-13  3.70  0.052717          1  0.014347  0.020439  0.045257 -0.127339   \n",
       "2020-01-14  3.76  0.016086          1  0.052717  0.014347  0.020439  0.045257   \n",
       "2020-01-15  4.29  0.131868          1  0.016086  0.052717  0.014347  0.020439   \n",
       "\n",
       "            rnt_lag5  \n",
       "Date                  \n",
       "2020-01-09 -0.077558  \n",
       "2020-01-10  0.029141  \n",
       "2020-01-13 -0.039952  \n",
       "2020-01-14 -0.127339  \n",
       "2020-01-15  0.045257  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lags = [1, 2,3, 4,5]\n",
    "cols = []\n",
    "for lag in lags:\n",
    "    col = f'rnt_lag{lag}'\n",
    "    stock[col] = stock['returns'].shift(lag)\n",
    "    cols.append(col)\n",
    "stock.dropna(inplace=True)\n",
    "stock.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def create_bins(data, bins=[0]):\n",
    "    global cols_bin\n",
    "    cols_bin = []\n",
    "    for col in cols:\n",
    "        col_bin = col + '_bin'\n",
    "        data[col_bin] = np.digitize(data[col], bins=bins)\n",
    "        cols_bin.append(col_bin)\n",
    "\n",
    "create_bins(stock)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>NIO</th>\n",
       "      <th>returns</th>\n",
       "      <th>direction</th>\n",
       "      <th>rnt_lag1</th>\n",
       "      <th>rnt_lag2</th>\n",
       "      <th>rnt_lag3</th>\n",
       "      <th>rnt_lag4</th>\n",
       "      <th>rnt_lag5</th>\n",
       "      <th>rnt_lag1_bin</th>\n",
       "      <th>rnt_lag2_bin</th>\n",
       "      <th>rnt_lag3_bin</th>\n",
       "      <th>rnt_lag4_bin</th>\n",
       "      <th>rnt_lag5_bin</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>3.46</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>1</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>0.029141</td>\n",
       "      <td>-0.077558</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>3.51</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>1</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>0.029141</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>3.70</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>1</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>-0.039952</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>3.76</td>\n",
       "      <td>0.016086</td>\n",
       "      <td>1</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>-0.127339</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>4.29</td>\n",
       "      <td>0.131868</td>\n",
       "      <td>1</td>\n",
       "      <td>0.016086</td>\n",
       "      <td>0.052717</td>\n",
       "      <td>0.014347</td>\n",
       "      <td>0.020439</td>\n",
       "      <td>0.045257</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             NIO   returns  direction  rnt_lag1  rnt_lag2  rnt_lag3  rnt_lag4  \\\n",
       "Date                                                                            \n",
       "2020-01-09  3.46  0.020439          1  0.045257 -0.127339 -0.039952  0.029141   \n",
       "2020-01-10  3.51  0.014347          1  0.020439  0.045257 -0.127339 -0.039952   \n",
       "2020-01-13  3.70  0.052717          1  0.014347  0.020439  0.045257 -0.127339   \n",
       "2020-01-14  3.76  0.016086          1  0.052717  0.014347  0.020439  0.045257   \n",
       "2020-01-15  4.29  0.131868          1  0.016086  0.052717  0.014347  0.020439   \n",
       "\n",
       "            rnt_lag5  rnt_lag1_bin  rnt_lag2_bin  rnt_lag3_bin  rnt_lag4_bin  \\\n",
       "Date                                                                           \n",
       "2020-01-09 -0.077558             1             0             0             1   \n",
       "2020-01-10  0.029141             1             1             0             0   \n",
       "2020-01-13 -0.039952             1             1             1             0   \n",
       "2020-01-14 -0.127339             1             1             1             1   \n",
       "2020-01-15  0.045257             1             1             1             1   \n",
       "\n",
       "            rnt_lag5_bin  \n",
       "Date                      \n",
       "2020-01-09             0  \n",
       "2020-01-10             1  \n",
       "2020-01-13             0  \n",
       "2020-01-14             0  \n",
       "2020-01-15             1  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "models = {\n",
    "    'log_reg': linear_model.LogisticRegression(),\n",
    "    'gauss_nb': GaussianNB(),\n",
    "    'svm': SVC(),\n",
    "    'random_forest': RandomForestClassifier(max_depth=10, n_estimators=100),\n",
    "    'MLP': MLPClassifier(max_iter=100)\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def fit_models(data):\n",
    "    mfit = {model: models[model].fit(data[cols_bin], data['direction']) for model in models.keys()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def derive_positions(data):\n",
    "    for model in models.keys():\n",
    "        data['pos_' + model] = models[model].predict(data[cols_bin])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def evaluate_strats(data):\n",
    "    global strategy_rtn\n",
    "    strategy_rtn = []\n",
    "    for model in models.keys():\n",
    "        col = 'strategy_' + model\n",
    "        data[col] = data['pos_'+ model] * data['returns']\n",
    "        strategy_rtn.append(col)\n",
    "    strategy_rtn.insert(0, 'returns')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fit_models(stock)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "derive_positions(stock)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "evaluate_strats(stock)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "returns                   13.610619\n",
       "strategy_log_reg          32.601800\n",
       "strategy_gauss_nb         19.939440\n",
       "strategy_svm              26.740366\n",
       "strategy_random_forest    39.342579\n",
       "strategy_MLP              18.147057\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock[strategy_rtn].sum().apply(np.exp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[*********************100%***********************]  1 of 1 completed\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>Dividends</th>\n",
       "      <th>Stock Splits</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2019-12-31</th>\n",
       "      <td>4.15</td>\n",
       "      <td>4.42</td>\n",
       "      <td>3.82</td>\n",
       "      <td>4.02</td>\n",
       "      <td>4.02</td>\n",
       "      <td>215008600</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>4.10</td>\n",
       "      <td>4.10</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.72</td>\n",
       "      <td>3.72</td>\n",
       "      <td>103740100</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>3.50</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.83</td>\n",
       "      <td>3.83</td>\n",
       "      <td>82892400</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>4.19</td>\n",
       "      <td>4.24</td>\n",
       "      <td>3.66</td>\n",
       "      <td>3.68</td>\n",
       "      <td>3.68</td>\n",
       "      <td>106619700</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>3.70</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.21</td>\n",
       "      <td>3.24</td>\n",
       "      <td>3.24</td>\n",
       "      <td>106336400</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Open  High   Low  Close  Adj Close     Volume  Dividends  \\\n",
       "Date                                                                   \n",
       "2019-12-31  4.15  4.42  3.82   4.02       4.02  215008600          0   \n",
       "2020-01-02  4.10  4.10  3.61   3.72       3.72  103740100          0   \n",
       "2020-01-03  3.50  3.90  3.48   3.83       3.83   82892400          0   \n",
       "2020-01-06  4.19  4.24  3.66   3.68       3.68  106619700          0   \n",
       "2020-01-07  3.70  3.73  3.21   3.24       3.24  106336400          0   \n",
       "\n",
       "            Stock Splits  \n",
       "Date                      \n",
       "2019-12-31             0  \n",
       "2020-01-02             0  \n",
       "2020-01-03             0  \n",
       "2020-01-06             0  \n",
       "2020-01-07             0  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "price = yf.download(ticker, progress=True, actions=True, start=start,end=end)\n",
    "price.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2020-01-09    0.020439\n",
       "2020-01-10    0.014347\n",
       "2020-01-13   -0.052717\n",
       "2020-01-14    0.016086\n",
       "2020-01-15    0.131868\n",
       "                ...   \n",
       "2020-12-22   -0.028387\n",
       "2020-12-23   -0.012052\n",
       "2020-12-24   -0.026731\n",
       "2020-12-28   -0.038076\n",
       "2020-12-29    0.046128\n",
       "Name: strategy_random_forest, Length: 246, dtype: float64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions = stock['strategy_random_forest']\n",
    "predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "predictions = pd.DataFrame(predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "predictions.rename(columns={'strategy_random_forest': 'predicted'}, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "price = predictions.join(price, how='right').dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>predicted</th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>Dividends</th>\n",
       "      <th>Stock Splits</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>0.020439</td>\n",
       "      <td>3.44</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.33</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.46</td>\n",
       "      <td>54644200</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>0.014347</td>\n",
       "      <td>3.49</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.40</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.51</td>\n",
       "      <td>35626700</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>-0.052717</td>\n",
       "      <td>3.71</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.70</td>\n",
       "      <td>3.70</td>\n",
       "      <td>59752700</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>0.016086</td>\n",
       "      <td>3.70</td>\n",
       "      <td>3.82</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.76</td>\n",
       "      <td>3.76</td>\n",
       "      <td>55194000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>0.131868</td>\n",
       "      <td>4.19</td>\n",
       "      <td>4.48</td>\n",
       "      <td>4.00</td>\n",
       "      <td>4.29</td>\n",
       "      <td>4.29</td>\n",
       "      <td>236357900</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            predicted  Open  High   Low  Close  Adj Close     Volume  \\\n",
       "Date                                                                   \n",
       "2020-01-09   0.020439  3.44  3.58  3.33   3.46       3.46   54644200   \n",
       "2020-01-10   0.014347  3.49  3.58  3.40   3.51       3.51   35626700   \n",
       "2020-01-13  -0.052717  3.71  3.73  3.52   3.70       3.70   59752700   \n",
       "2020-01-14   0.016086  3.70  3.82  3.61   3.76       3.76   55194000   \n",
       "2020-01-15   0.131868  4.19  4.48  4.00   4.29       4.29  236357900   \n",
       "\n",
       "            Dividends  Stock Splits  \n",
       "Date                                 \n",
       "2020-01-09          0             0  \n",
       "2020-01-10          0             0  \n",
       "2020-01-13          0             0  \n",
       "2020-01-14          0             0  \n",
       "2020-01-15          0             0  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "price.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>predicted</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>0.020439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>0.014347</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>-0.052717</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>0.016086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>0.131868</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            predicted\n",
       "Date                 \n",
       "2020-01-09   0.020439\n",
       "2020-01-10   0.014347\n",
       "2020-01-13  -0.052717\n",
       "2020-01-14   0.016086\n",
       "2020-01-15   0.131868"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "OHLCH=['open', 'high', 'low', 'close', 'volume']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class SignalData(PandasData):\n",
    "    cols = OHLCH + ['predicted']\n",
    "    lines = tuple(cols)\n",
    "    params = {c: -1 for c in cols}\n",
    "    params.update({'datetime': None})\n",
    "    params = tuple(params.items())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class RandomForestStrategy(bt.Strategy):\n",
    "    params = dict(\n",
    "    \n",
    "    )\n",
    "    \n",
    "    def log(self, txt, dt=None):\n",
    "        ''' Logging function fot this strategy'''\n",
    "        dt = dt or self.data.datetime[0]\n",
    "        if isinstance(dt, float):\n",
    "            dt = bt.num2date(dt)\n",
    "        print('%s, %s' % (dt.isoformat(), txt))\n",
    "    \n",
    "    def __init__(self):\n",
    "        self.data_predicted = self.datas[0].predicted\n",
    "        self.data_open = self.datas[0].open\n",
    "        self.data_close = self.datas[0].close\n",
    "        \n",
    "        self.order = None\n",
    "        self.price = None\n",
    "        self.comm = None\n",
    "        \n",
    "    def notify_order(self, order):\n",
    "        if order.status in [order.Submitted, order.Accepted]:\n",
    "            return\n",
    "        if order.status in [order.Completed]:\n",
    "            if order.isbuy():\n",
    "                self.log('BUY EXECUTED, %.2f' % order.executed.price)\n",
    "            elif order.issell():\n",
    "                self.log('SELL EXECUTED, %.2f' % order.executed.price)\n",
    "            self.bar_executed = len(self)\n",
    "        elif order.status in [order.Canceled, order.Margin, order.Rejected]:\n",
    "            self.log('Order Canceled/Margin/Rejected')\n",
    "        self.order = None\n",
    "\n",
    "    def notify_trade(self, trade):\n",
    "        if not trade.isclosed:\n",
    "            return\n",
    "\n",
    "        self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' %\n",
    "                 (trade.pnl, trade.pnlcomm))\n",
    "    \n",
    "    def next_open(self):\n",
    "        if not self.position:\n",
    "            if self.data_predicted > 0:\n",
    "                size = int((self.broker.getcash()/self.datas[0].open)*0.9)\n",
    "                self.log(f\"BUY CREATED - SIZE : {size}, CASH: {self.broker.getcash():.2f}, OPEN: {self.data_open[0]}, CLOSE: {self.data_close[0]}\")\n",
    "                self.buy(size=size)\n",
    "        else:\n",
    "            if self.data_predicted < 0:\n",
    "                self.log(f'SELL CREATED - SIZE: {self.position.size}')\n",
    "                self.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the beigin value is 10000.00\n",
      "2020-01-10T00:00:00, BUY CREATED - SIZE : 2578, CASH: 10000.00, OPEN: 3.490000009536743, CLOSE: 3.509999990463257\n",
      "2020-01-10T00:00:00, BUY EXECUTED, 3.49\n",
      "2020-01-13T00:00:00, SELL CREATED - SIZE: 2578\n",
      "2020-01-13T00:00:00, SELL EXECUTED, 3.71\n",
      "2020-01-13T00:00:00, OPERATION PROFIT, GROSS 567.16, NET 561.59\n",
      "2020-01-14T00:00:00, BUY CREATED - SIZE : 2569, CASH: 10561.59, OPEN: 3.700000047683716, CLOSE: 3.759999990463257\n",
      "2020-01-14T00:00:00, BUY EXECUTED, 3.70\n",
      "2020-01-22T00:00:00, SELL CREATED - SIZE: 2569\n",
      "2020-01-22T00:00:00, SELL EXECUTED, 5.42\n",
      "2020-01-22T00:00:00, OPERATION PROFIT, GROSS 4418.68, NET 4411.65\n",
      "2020-01-23T00:00:00, BUY CREATED - SIZE : 2948, CASH: 14973.24, OPEN: 4.570000171661377, CLOSE: 4.920000076293945\n",
      "2020-01-23T00:00:00, BUY EXECUTED, 4.57\n",
      "2020-01-24T00:00:00, SELL CREATED - SIZE: 2948\n",
      "2020-01-24T00:00:00, SELL EXECUTED, 5.00\n",
      "2020-01-24T00:00:00, OPERATION PROFIT, GROSS 1267.64, NET 1259.18\n",
      "2020-01-27T00:00:00, BUY CREATED - SIZE : 3661, CASH: 16232.42, OPEN: 3.990000009536743, CLOSE: 4.010000228881836\n",
      "2020-01-27T00:00:00, BUY EXECUTED, 3.99\n",
      "2020-01-30T00:00:00, SELL CREATED - SIZE: 3661\n",
      "2020-01-30T00:00:00, SELL EXECUTED, 4.24\n",
      "2020-01-30T00:00:00, OPERATION PROFIT, GROSS 915.25, NET 906.21\n",
      "2020-01-31T00:00:00, BUY CREATED - SIZE : 3837, CASH: 17138.63, OPEN: 4.019999980926514, CLOSE: 3.7799999713897705\n",
      "2020-01-31T00:00:00, BUY EXECUTED, 4.02\n",
      "2020-02-04T00:00:00, SELL CREATED - SIZE: 3837\n",
      "2020-02-04T00:00:00, SELL EXECUTED, 4.29\n",
      "2020-02-04T00:00:00, OPERATION PROFIT, GROSS 1035.99, NET 1026.42\n",
      "2020-02-06T00:00:00, BUY CREATED - SIZE : 3892, CASH: 18165.05, OPEN: 4.199999809265137, CLOSE: 4.079999923706055\n",
      "2020-02-06T00:00:00, BUY EXECUTED, 4.20\n",
      "2020-02-07T00:00:00, SELL CREATED - SIZE: 3892\n",
      "2020-02-07T00:00:00, SELL EXECUTED, 4.02\n",
      "2020-02-07T00:00:00, OPERATION PROFIT, GROSS -700.56, NET -710.16\n",
      "2020-02-10T00:00:00, BUY CREATED - SIZE : 4280, CASH: 17454.90, OPEN: 3.6700000762939453, CLOSE: 3.869999885559082\n",
      "2020-02-10T00:00:00, BUY EXECUTED, 3.67\n",
      "2020-02-12T00:00:00, SELL CREATED - SIZE: 4280\n",
      "2020-02-12T00:00:00, SELL EXECUTED, 4.00\n",
      "2020-02-12T00:00:00, OPERATION PROFIT, GROSS 1412.40, NET 1402.55\n",
      "2020-02-13T00:00:00, BUY CREATED - SIZE : 4296, CASH: 18857.45, OPEN: 3.950000047683716, CLOSE: 4.03000020980835\n",
      "2020-02-13T00:00:00, BUY EXECUTED, 3.95\n",
      "2020-02-19T00:00:00, SELL CREATED - SIZE: 4296\n",
      "2020-02-19T00:00:00, SELL EXECUTED, 3.93\n",
      "2020-02-19T00:00:00, OPERATION PROFIT, GROSS -85.92, NET -96.08\n",
      "2020-02-20T00:00:00, BUY CREATED - SIZE : 4118, CASH: 18761.37, OPEN: 4.099999904632568, CLOSE: 4.260000228881836\n",
      "2020-02-20T00:00:00, BUY EXECUTED, 4.10\n",
      "2020-02-27T00:00:00, SELL CREATED - SIZE: 4118\n",
      "2020-02-27T00:00:00, SELL EXECUTED, 4.09\n",
      "2020-02-27T00:00:00, OPERATION PROFIT, GROSS -41.18, NET -51.30\n",
      "2020-03-02T00:00:00, BUY CREATED - SIZE : 4057, CASH: 18710.07, OPEN: 4.150000095367432, CLOSE: 4.110000133514404\n",
      "2020-03-02T00:00:00, BUY EXECUTED, 4.15\n",
      "2020-03-03T00:00:00, SELL CREATED - SIZE: 4057\n",
      "2020-03-03T00:00:00, SELL EXECUTED, 4.08\n",
      "2020-03-03T00:00:00, OPERATION PROFIT, GROSS -283.99, NET -294.01\n",
      "2020-03-04T00:00:00, BUY CREATED - SIZE : 4112, CASH: 18416.07, OPEN: 4.03000020980835, CLOSE: 3.869999885559082\n",
      "2020-03-04T00:00:00, BUY EXECUTED, 4.03\n",
      "2020-03-10T00:00:00, SELL CREATED - SIZE: 4112\n",
      "2020-03-10T00:00:00, SELL EXECUTED, 3.49\n",
      "2020-03-10T00:00:00, OPERATION PROFIT, GROSS -2220.48, NET -2229.76\n",
      "2020-03-11T00:00:00, BUY CREATED - SIZE : 4284, CASH: 16186.31, OPEN: 3.4000000953674316, CLOSE: 3.319999933242798\n",
      "2020-03-11T00:00:00, BUY EXECUTED, 3.40\n",
      "2020-03-12T00:00:00, SELL CREATED - SIZE: 4284\n",
      "2020-03-12T00:00:00, SELL EXECUTED, 3.06\n",
      "2020-03-12T00:00:00, OPERATION PROFIT, GROSS -1456.56, NET -1464.86\n",
      "2020-03-16T00:00:00, BUY CREATED - SIZE : 4616, CASH: 14721.45, OPEN: 2.869999885559082, CLOSE: 2.940000057220459\n",
      "2020-03-16T00:00:00, BUY EXECUTED, 2.87\n",
      "2020-03-17T00:00:00, SELL CREATED - SIZE: 4616\n",
      "2020-03-17T00:00:00, SELL EXECUTED, 2.97\n",
      "2020-03-17T00:00:00, OPERATION PROFIT, GROSS 461.60, NET 453.51\n",
      "2020-03-18T00:00:00, BUY CREATED - SIZE : 5690, CASH: 15174.96, OPEN: 2.4000000953674316, CLOSE: 2.430000066757202\n",
      "2020-03-18T00:00:00, BUY EXECUTED, 2.40\n",
      "2020-03-20T00:00:00, SELL CREATED - SIZE: 5690\n",
      "2020-03-20T00:00:00, SELL EXECUTED, 2.49\n",
      "2020-03-20T00:00:00, OPERATION PROFIT, GROSS 512.10, NET 503.75\n",
      "2020-03-23T00:00:00, BUY CREATED - SIZE : 6030, CASH: 15678.71, OPEN: 2.3399999141693115, CLOSE: 2.369999885559082\n",
      "2020-03-23T00:00:00, BUY EXECUTED, 2.34\n",
      "2020-04-02T00:00:00, SELL CREATED - SIZE: 6030\n",
      "2020-04-02T00:00:00, SELL EXECUTED, 2.51\n",
      "2020-04-02T00:00:00, OPERATION PROFIT, GROSS 1025.10, NET 1016.33\n",
      "2020-04-03T00:00:00, BUY CREATED - SIZE : 6132, CASH: 16695.04, OPEN: 2.450000047683716, CLOSE: 2.4000000953674316\n",
      "2020-04-03T00:00:00, BUY EXECUTED, 2.45\n",
      "2020-04-08T00:00:00, SELL CREATED - SIZE: 6132\n",
      "2020-04-08T00:00:00, SELL EXECUTED, 2.76\n",
      "2020-04-08T00:00:00, OPERATION PROFIT, GROSS 1900.92, NET 1891.34\n",
      "2020-04-13T00:00:00, BUY CREATED - SIZE : 6265, CASH: 18586.37, OPEN: 2.6700000762939453, CLOSE: 2.9700000286102295\n",
      "2020-04-13T00:00:00, BUY EXECUTED, 2.67\n",
      "2020-04-15T00:00:00, SELL CREATED - SIZE: 6265\n",
      "2020-04-15T00:00:00, SELL EXECUTED, 2.95\n",
      "2020-04-15T00:00:00, OPERATION PROFIT, GROSS 1754.20, NET 1743.64\n",
      "2020-04-22T00:00:00, BUY CREATED - SIZE : 5921, CASH: 20330.01, OPEN: 3.0899999141693115, CLOSE: 3.0899999141693115\n",
      "2020-04-22T00:00:00, BUY EXECUTED, 3.09\n",
      "2020-04-23T00:00:00, SELL CREATED - SIZE: 5921\n",
      "2020-04-23T00:00:00, SELL EXECUTED, 3.20\n",
      "2020-04-23T00:00:00, OPERATION PROFIT, GROSS 651.31, NET 640.14\n",
      "2020-04-27T00:00:00, BUY CREATED - SIZE : 6291, CASH: 20970.15, OPEN: 3.0, CLOSE: 3.240000009536743\n",
      "2020-04-27T00:00:00, BUY EXECUTED, 3.00\n",
      "2020-05-13T00:00:00, SELL CREATED - SIZE: 6291\n",
      "2020-05-13T00:00:00, SELL EXECUTED, 3.64\n",
      "2020-05-13T00:00:00, OPERATION PROFIT, GROSS 4026.24, NET 4013.71\n",
      "2020-05-14T00:00:00, BUY CREATED - SIZE : 6752, CASH: 24983.86, OPEN: 3.3299999237060547, CLOSE: 3.450000047683716\n",
      "2020-05-14T00:00:00, BUY EXECUTED, 3.33\n",
      "2020-05-15T00:00:00, SELL CREATED - SIZE: 6752\n",
      "2020-05-15T00:00:00, SELL EXECUTED, 3.37\n",
      "2020-05-15T00:00:00, OPERATION PROFIT, GROSS 270.08, NET 256.51\n",
      "2020-05-18T00:00:00, BUY CREATED - SIZE : 6490, CASH: 25240.37, OPEN: 3.5, CLOSE: 3.609999895095825\n",
      "2020-05-18T00:00:00, BUY EXECUTED, 3.50\n",
      "2020-05-20T00:00:00, SELL CREATED - SIZE: 6490\n",
      "2020-05-20T00:00:00, SELL EXECUTED, 3.76\n",
      "2020-05-20T00:00:00, OPERATION PROFIT, GROSS 1687.40, NET 1673.26\n",
      "2020-05-26T00:00:00, BUY CREATED - SIZE : 7082, CASH: 26913.63, OPEN: 3.4200000762939453, CLOSE: 3.819999933242798\n",
      "2020-05-26T00:00:00, BUY EXECUTED, 3.42\n",
      "2020-05-29T00:00:00, SELL CREATED - SIZE: 7082\n",
      "2020-05-29T00:00:00, SELL EXECUTED, 3.82\n",
      "2020-05-29T00:00:00, OPERATION PROFIT, GROSS 2832.80, NET 2817.42\n",
      "2020-06-01T00:00:00, BUY CREATED - SIZE : 6689, CASH: 29731.05, OPEN: 4.0, CLOSE: 4.260000228881836\n",
      "2020-06-01T00:00:00, BUY EXECUTED, 4.00\n",
      "2020-06-02T00:00:00, SELL CREATED - SIZE: 6689\n",
      "2020-06-02T00:00:00, SELL EXECUTED, 4.36\n",
      "2020-06-02T00:00:00, OPERATION PROFIT, GROSS 2408.04, NET 2391.26\n",
      "2020-06-04T00:00:00, BUY CREATED - SIZE : 4810, CASH: 32122.31, OPEN: 6.010000228881836, CLOSE: 5.96999979019165\n",
      "2020-06-04T00:00:00, BUY EXECUTED, 6.01\n",
      "2020-06-05T00:00:00, SELL CREATED - SIZE: 4810\n",
      "2020-06-05T00:00:00, SELL EXECUTED, 6.03\n",
      "2020-06-05T00:00:00, OPERATION PROFIT, GROSS 96.20, NET 78.83\n",
      "2020-06-08T00:00:00, BUY CREATED - SIZE : 4988, CASH: 32201.14, OPEN: 5.809999942779541, CLOSE: 5.96999979019165\n",
      "2020-06-08T00:00:00, BUY EXECUTED, 5.81\n",
      "2020-06-11T00:00:00, SELL CREATED - SIZE: 4988\n",
      "2020-06-11T00:00:00, SELL EXECUTED, 5.79\n",
      "2020-06-11T00:00:00, OPERATION PROFIT, GROSS -99.76, NET -117.12\n",
      "2020-06-12T00:00:00, BUY CREATED - SIZE : 4657, CASH: 32084.02, OPEN: 6.199999809265137, CLOSE: 6.099999904632568\n",
      "2020-06-12T00:00:00, BUY EXECUTED, 6.20\n",
      "2020-06-15T00:00:00, SELL CREATED - SIZE: 4657\n",
      "2020-06-15T00:00:00, SELL EXECUTED, 5.97\n",
      "2020-06-15T00:00:00, OPERATION PROFIT, GROSS -1071.11, NET -1088.11\n",
      "2020-06-16T00:00:00, BUY CREATED - SIZE : 3754, CASH: 30995.91, OPEN: 7.429999828338623, CLOSE: 6.989999771118164\n",
      "2020-06-16T00:00:00, BUY EXECUTED, 7.43\n",
      "2020-06-18T00:00:00, SELL CREATED - SIZE: 3754\n",
      "2020-06-18T00:00:00, SELL EXECUTED, 6.80\n",
      "2020-06-18T00:00:00, OPERATION PROFIT, GROSS -2365.02, NET -2381.04\n",
      "2020-06-19T00:00:00, BUY CREATED - SIZE : 3499, CASH: 28614.86, OPEN: 7.360000133514404, CLOSE: 7.340000152587891\n",
      "2020-06-19T00:00:00, BUY EXECUTED, 7.36\n",
      "2020-06-22T00:00:00, SELL CREATED - SIZE: 3499\n",
      "2020-06-22T00:00:00, SELL EXECUTED, 7.86\n",
      "2020-06-22T00:00:00, OPERATION PROFIT, GROSS 1749.50, NET 1733.52\n",
      "2020-06-23T00:00:00, BUY CREATED - SIZE : 3617, CASH: 30348.39, OPEN: 7.550000190734863, CLOSE: 7.230000019073486\n",
      "2020-06-23T00:00:00, BUY EXECUTED, 7.55\n",
      "2020-07-02T00:00:00, SELL CREATED - SIZE: 3617\n",
      "2020-07-02T00:00:00, SELL EXECUTED, 9.05\n",
      "2020-07-02T00:00:00, OPERATION PROFIT, GROSS 5425.50, NET 5407.49\n",
      "2020-07-06T00:00:00, BUY CREATED - SIZE : 2912, CASH: 35755.88, OPEN: 11.050000190734863, CLOSE: 11.510000228881836\n",
      "2020-07-06T00:00:00, BUY EXECUTED, 11.05\n",
      "2020-07-08T00:00:00, SELL CREATED - SIZE: 2912\n",
      "2020-07-08T00:00:00, SELL EXECUTED, 14.10\n",
      "2020-07-08T00:00:00, OPERATION PROFIT, GROSS 8881.60, NET 8859.63\n",
      "2020-07-09T00:00:00, BUY CREATED - SIZE : 2974, CASH: 44615.50, OPEN: 13.5, CLOSE: 14.569999694824219\n",
      "2020-07-09T00:00:00, BUY EXECUTED, 13.50\n",
      "2020-07-15T00:00:00, SELL CREATED - SIZE: 2974\n",
      "2020-07-15T00:00:00, SELL EXECUTED, 13.82\n",
      "2020-07-15T00:00:00, OPERATION PROFIT, GROSS 951.68, NET 927.30\n",
      "2020-07-16T00:00:00, BUY CREATED - SIZE : 3289, CASH: 45542.81, OPEN: 12.460000038146973, CLOSE: 12.9399995803833\n",
      "2020-07-16T00:00:00, BUY EXECUTED, 12.46\n",
      "2020-07-17T00:00:00, SELL CREATED - SIZE: 3289\n",
      "2020-07-17T00:00:00, SELL EXECUTED, 11.86\n",
      "2020-07-17T00:00:00, OPERATION PROFIT, GROSS -1973.40, NET -1997.40\n",
      "2020-07-21T00:00:00, BUY CREATED - SIZE : 2913, CASH: 43545.41, OPEN: 13.449999809265137, CLOSE: 12.880000114440918\n",
      "2020-07-21T00:00:00, BUY EXECUTED, 13.45\n",
      "2020-07-24T00:00:00, SELL CREATED - SIZE: 2913\n",
      "2020-07-24T00:00:00, SELL EXECUTED, 11.38\n",
      "2020-07-24T00:00:00, OPERATION PROFIT, GROSS -6029.91, NET -6051.61\n",
      "2020-07-28T00:00:00, BUY CREATED - SIZE : 2939, CASH: 37493.80, OPEN: 11.479999542236328, CLOSE: 12.270000457763672\n",
      "2020-07-28T00:00:00, BUY EXECUTED, 11.48\n",
      "2020-07-29T00:00:00, SELL CREATED - SIZE: 2939\n",
      "2020-07-29T00:00:00, SELL EXECUTED, 12.65\n",
      "2020-07-29T00:00:00, OPERATION PROFIT, GROSS 3438.63, NET 3417.35\n",
      "2020-07-30T00:00:00, BUY CREATED - SIZE : 2917, CASH: 40911.16, OPEN: 12.619999885559082, CLOSE: 12.199999809265137\n",
      "2020-07-30T00:00:00, BUY EXECUTED, 12.62\n",
      "2020-08-04T00:00:00, SELL CREATED - SIZE: 2917\n",
      "2020-08-04T00:00:00, SELL EXECUTED, 14.46\n",
      "2020-08-04T00:00:00, OPERATION PROFIT, GROSS 5367.28, NET 5343.58\n",
      "2020-08-05T00:00:00, BUY CREATED - SIZE : 3104, CASH: 46254.74, OPEN: 13.40999984741211, CLOSE: 13.920000076293945\n",
      "2020-08-05T00:00:00, BUY EXECUTED, 13.41\n",
      "2020-08-14T00:00:00, SELL CREATED - SIZE: 3104\n",
      "2020-08-14T00:00:00, SELL EXECUTED, 13.18\n",
      "2020-08-14T00:00:00, OPERATION PROFIT, GROSS -713.92, NET -738.68\n",
      "2020-08-17T00:00:00, BUY CREATED - SIZE : 3134, CASH: 45516.06, OPEN: 13.069999694824219, CLOSE: 14.050000190734863\n",
      "2020-08-17T00:00:00, BUY EXECUTED, 13.07\n",
      "2020-08-20T00:00:00, SELL CREATED - SIZE: 3134\n",
      "2020-08-20T00:00:00, SELL EXECUTED, 13.85\n",
      "2020-08-20T00:00:00, OPERATION PROFIT, GROSS 2444.52, NET 2419.21\n",
      "2020-08-21T00:00:00, BUY CREATED - SIZE : 3162, CASH: 47935.27, OPEN: 13.640000343322754, CLOSE: 14.119999885559082\n",
      "2020-08-21T00:00:00, BUY EXECUTED, 13.64\n",
      "2020-08-24T00:00:00, SELL CREATED - SIZE: 3162\n",
      "2020-08-24T00:00:00, SELL EXECUTED, 14.63\n",
      "2020-08-24T00:00:00, OPERATION PROFIT, GROSS 3130.38, NET 3103.56\n",
      "2020-08-25T00:00:00, BUY CREATED - SIZE : 3046, CASH: 51038.84, OPEN: 15.079999923706055, CLOSE: 17.84000015258789\n",
      "2020-08-25T00:00:00, BUY EXECUTED, 15.08\n",
      "2020-08-26T00:00:00, SELL CREATED - SIZE: 3046\n",
      "2020-08-26T00:00:00, SELL EXECUTED, 19.01\n",
      "2020-08-26T00:00:00, OPERATION PROFIT, GROSS 11970.78, NET 11939.63\n",
      "2020-08-31T00:00:00, BUY CREATED - SIZE : 3297, CASH: 62978.47, OPEN: 17.190000534057617, CLOSE: 19.030000686645508\n",
      "2020-08-31T00:00:00, BUY EXECUTED, 17.19\n",
      "2020-09-01T00:00:00, SELL CREATED - SIZE: 3297\n",
      "2020-09-01T00:00:00, SELL EXECUTED, 19.45\n",
      "2020-09-01T00:00:00, OPERATION PROFIT, GROSS 7451.22, NET 7414.98\n",
      "2020-09-03T00:00:00, BUY CREATED - SIZE : 3318, CASH: 70393.45, OPEN: 19.09000015258789, CLOSE: 18.700000762939453\n",
      "2020-09-03T00:00:00, BUY EXECUTED, 19.09\n",
      "2020-09-04T00:00:00, SELL CREATED - SIZE: 3318\n",
      "2020-09-04T00:00:00, SELL EXECUTED, 18.54\n",
      "2020-09-04T00:00:00, OPERATION PROFIT, GROSS -1824.90, NET -1862.35\n",
      "2020-09-09T00:00:00, BUY CREATED - SIZE : 3445, CASH: 68531.09, OPEN: 17.899999618530273, CLOSE: 18.09000015258789\n",
      "2020-09-09T00:00:00, BUY EXECUTED, 17.90\n",
      "2020-09-17T00:00:00, SELL CREATED - SIZE: 3445\n",
      "2020-09-17T00:00:00, SELL EXECUTED, 18.26\n",
      "2020-09-17T00:00:00, OPERATION PROFIT, GROSS 1240.20, NET 1202.83\n",
      "2020-09-18T00:00:00, BUY CREATED - SIZE : 3182, CASH: 69733.92, OPEN: 19.719999313354492, CLOSE: 19.40999984741211\n",
      "2020-09-18T00:00:00, BUY EXECUTED, 19.72\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2020-09-23T00:00:00, SELL CREATED - SIZE: 3182\n",
      "2020-09-23T00:00:00, SELL EXECUTED, 19.22\n",
      "2020-09-23T00:00:00, OPERATION PROFIT, GROSS -1591.00, NET -1628.17\n",
      "2020-09-24T00:00:00, BUY CREATED - SIZE : 3538, CASH: 68105.75, OPEN: 17.31999969482422, CLOSE: 17.850000381469727\n",
      "2020-09-24T00:00:00, BUY EXECUTED, 17.32\n",
      "2020-09-30T00:00:00, SELL CREATED - SIZE: 3538\n",
      "2020-09-30T00:00:00, SELL EXECUTED, 21.72\n",
      "2020-09-30T00:00:00, OPERATION PROFIT, GROSS 15567.20, NET 15525.76\n",
      "2020-10-01T00:00:00, BUY CREATED - SIZE : 3471, CASH: 83631.51, OPEN: 21.68000030517578, CLOSE: 21.760000228881836\n",
      "2020-10-01T00:00:00, BUY EXECUTED, 21.68\n",
      "2020-10-02T00:00:00, SELL CREATED - SIZE: 3471\n",
      "2020-10-02T00:00:00, SELL EXECUTED, 20.83\n",
      "2020-10-02T00:00:00, OPERATION PROFIT, GROSS -2950.35, NET -2994.62\n",
      "2020-10-05T00:00:00, BUY CREATED - SIZE : 3350, CASH: 80636.89, OPEN: 21.65999984741211, CLOSE: 21.59000015258789\n",
      "2020-10-05T00:00:00, BUY EXECUTED, 21.66\n",
      "2020-10-06T00:00:00, SELL CREATED - SIZE: 3350\n",
      "2020-10-06T00:00:00, SELL EXECUTED, 21.71\n",
      "2020-10-06T00:00:00, OPERATION PROFIT, GROSS 167.50, NET 123.91\n",
      "2020-10-09T00:00:00, BUY CREATED - SIZE : 3361, CASH: 80760.80, OPEN: 21.6200008392334, CLOSE: 21.469999313354492\n",
      "2020-10-09T00:00:00, BUY EXECUTED, 21.62\n",
      "2020-10-13T00:00:00, SELL CREATED - SIZE: 3361\n",
      "2020-10-13T00:00:00, SELL EXECUTED, 21.86\n",
      "2020-10-13T00:00:00, OPERATION PROFIT, GROSS 806.64, NET 762.80\n",
      "2020-10-14T00:00:00, BUY CREATED - SIZE : 3059, CASH: 81523.60, OPEN: 23.979999542236328, CLOSE: 26.5\n",
      "2020-10-14T00:00:00, BUY EXECUTED, 23.98\n",
      "2020-10-16T00:00:00, SELL CREATED - SIZE: 3059\n",
      "2020-10-16T00:00:00, SELL EXECUTED, 29.18\n",
      "2020-10-16T00:00:00, OPERATION PROFIT, GROSS 15906.80, NET 15858.02\n",
      "2020-10-19T00:00:00, BUY CREATED - SIZE : 3106, CASH: 97381.62, OPEN: 28.209999084472656, CLOSE: 27.6299991607666\n",
      "2020-10-19T00:00:00, BUY EXECUTED, 28.21\n",
      "2020-10-20T00:00:00, SELL CREATED - SIZE: 3106\n",
      "2020-10-20T00:00:00, SELL EXECUTED, 27.42\n",
      "2020-10-20T00:00:00, OPERATION PROFIT, GROSS -2453.74, NET -2505.57\n",
      "2020-10-22T00:00:00, BUY CREATED - SIZE : 3033, CASH: 94876.05, OPEN: 28.149999618530273, CLOSE: 27.3799991607666\n",
      "2020-10-22T00:00:00, BUY EXECUTED, 28.15\n",
      "2020-10-23T00:00:00, SELL CREATED - SIZE: 3033\n",
      "2020-10-23T00:00:00, SELL EXECUTED, 27.37\n",
      "2020-10-23T00:00:00, OPERATION PROFIT, GROSS -2365.74, NET -2416.25\n",
      "2020-10-26T00:00:00, BUY CREATED - SIZE : 3127, CASH: 92459.79, OPEN: 26.610000610351562, CLOSE: 26.010000228881836\n",
      "2020-10-26T00:00:00, BUY EXECUTED, 26.61\n",
      "2020-10-30T00:00:00, SELL CREATED - SIZE: 3127\n",
      "2020-10-30T00:00:00, SELL EXECUTED, 31.39\n",
      "2020-10-30T00:00:00, OPERATION PROFIT, GROSS 14947.06, NET 14892.65\n",
      "2020-11-02T00:00:00, BUY CREATED - SIZE : 2845, CASH: 107352.44, OPEN: 33.95000076293945, CLOSE: 33.31999969482422\n",
      "2020-11-02T00:00:00, BUY EXECUTED, 33.95\n",
      "2020-11-05T00:00:00, SELL CREATED - SIZE: 2845\n",
      "2020-11-05T00:00:00, SELL EXECUTED, 38.78\n",
      "2020-11-05T00:00:00, OPERATION PROFIT, GROSS 13741.34, NET 13679.27\n",
      "2020-11-09T00:00:00, BUY CREATED - SIZE : 2615, CASH: 121031.71, OPEN: 41.650001525878906, CLOSE: 44.02000045776367\n",
      "2020-11-09T00:00:00, BUY EXECUTED, 41.65\n",
      "2020-11-10T00:00:00, SELL CREATED - SIZE: 2615\n",
      "2020-11-10T00:00:00, SELL EXECUTED, 44.50\n",
      "2020-11-10T00:00:00, OPERATION PROFIT, GROSS 7452.75, NET 7385.16\n",
      "2020-11-12T00:00:00, BUY CREATED - SIZE : 2598, CASH: 128416.87, OPEN: 44.47999954223633, CLOSE: 48.29999923706055\n",
      "2020-11-12T00:00:00, BUY EXECUTED, 44.48\n",
      "2020-11-13T00:00:00, SELL CREATED - SIZE: 2598\n",
      "2020-11-13T00:00:00, SELL EXECUTED, 51.29\n",
      "2020-11-13T00:00:00, OPERATION PROFIT, GROSS 17692.38, NET 17617.74\n",
      "2020-11-16T00:00:00, BUY CREATED - SIZE : 3196, CASH: 146034.61, OPEN: 41.119998931884766, CLOSE: 45.58000183105469\n",
      "2020-11-16T00:00:00, BUY EXECUTED, 41.12\n",
      "2020-11-23T00:00:00, SELL CREATED - SIZE: 3196\n",
      "2020-11-23T00:00:00, SELL EXECUTED, 50.86\n",
      "2020-11-23T00:00:00, OPERATION PROFIT, GROSS 31129.05, NET 31040.85\n",
      "2020-11-24T00:00:00, BUY CREATED - SIZE : 2796, CASH: 177075.47, OPEN: 56.9900016784668, CLOSE: 53.5099983215332\n",
      "2020-11-24T00:00:00, BUY EXECUTED, 56.99\n",
      "2020-11-25T00:00:00, SELL CREATED - SIZE: 2796\n",
      "2020-11-25T00:00:00, SELL EXECUTED, 49.98\n",
      "2020-11-25T00:00:00, OPERATION PROFIT, GROSS -19599.97, NET -19689.69\n",
      "2020-11-27T00:00:00, BUY CREATED - SIZE : 2581, CASH: 157385.77, OPEN: 54.86000061035156, CLOSE: 54.0\n",
      "2020-11-27T00:00:00, BUY EXECUTED, 54.86\n",
      "2020-12-01T00:00:00, SELL CREATED - SIZE: 2581\n",
      "2020-12-01T00:00:00, SELL EXECUTED, 52.02\n",
      "2020-12-01T00:00:00, OPERATION PROFIT, GROSS -7330.04, NET -7412.80\n",
      "2020-12-02T00:00:00, BUY CREATED - SIZE : 3360, CASH: 149972.98, OPEN: 40.15999984741211, CLOSE: 47.97999954223633\n",
      "2020-12-02T00:00:00, BUY EXECUTED, 40.16\n",
      "2020-12-04T00:00:00, SELL CREATED - SIZE: 3360\n",
      "2020-12-04T00:00:00, SELL EXECUTED, 44.66\n",
      "2020-12-04T00:00:00, OPERATION PROFIT, GROSS 15120.00, NET 15034.50\n",
      "2020-12-07T00:00:00, BUY CREATED - SIZE : 3494, CASH: 165007.48, OPEN: 42.5, CLOSE: 45.11000061035156\n",
      "2020-12-07T00:00:00, BUY EXECUTED, 42.50\n",
      "2020-12-09T00:00:00, SELL CREATED - SIZE: 3494\n",
      "2020-12-09T00:00:00, SELL EXECUTED, 47.08\n",
      "2020-12-09T00:00:00, OPERATION PROFIT, GROSS 16002.53, NET 15908.63\n",
      "2020-12-14T00:00:00, BUY CREATED - SIZE : 4076, CASH: 180916.11, OPEN: 39.939998626708984, CLOSE: 40.97999954223633\n",
      "2020-12-14T00:00:00, BUY EXECUTED, 39.94\n",
      "2020-12-18T00:00:00, SELL CREATED - SIZE: 4076\n",
      "2020-12-18T00:00:00, SELL EXECUTED, 45.89\n",
      "2020-12-18T00:00:00, OPERATION PROFIT, GROSS 24252.20, NET 24147.25\n",
      "2020-12-21T00:00:00, BUY CREATED - SIZE : 4044, CASH: 205063.36, OPEN: 45.630001068115234, CLOSE: 48.95000076293945\n",
      "2020-12-21T00:00:00, BUY EXECUTED, 45.63\n",
      "2020-12-22T00:00:00, SELL CREATED - SIZE: 4044\n",
      "2020-12-22T00:00:00, SELL EXECUTED, 49.61\n",
      "2020-12-22T00:00:00, OPERATION PROFIT, GROSS 16095.12, NET 15979.57\n",
      "2020-12-29T00:00:00, BUY CREATED - SIZE : 4552, CASH: 221042.93, OPEN: 43.70000076293945, CLOSE: 46.13999938964844\n",
      "2020-12-29T00:00:00, BUY EXECUTED, 43.70\n",
      "the end value is 232090.13\n",
      "   Total returns          APR   drawdown sharperatio\n",
      "0       3.144541  2405.909392  26.362233        None\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/backtrader/plot/__init__.py:35: UserWarning: \n",
      "This call to matplotlib.use() has no effect because the backend has already\n",
      "been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n",
      "or matplotlib.backends is imported for the first time.\n",
      "\n",
      "The backend was *originally* set to 'module://ipykernel.pylab.backend_inline' by the following code:\n",
      "  File \"/anaconda3/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"/anaconda3/lib/python3.6/runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 477, in start\n",
      "    ioloop.IOLoop.instance().start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/ioloop.py\", line 177, in start\n",
      "    super(ZMQIOLoop, self).start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/ioloop.py\", line 888, in start\n",
      "    handler_func(fd_obj, events)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 277, in null_wrapper\n",
      "    return fn(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n",
      "    self._handle_recv()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n",
      "    self._run_callback(callback, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n",
      "    callback(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 277, in null_wrapper\n",
      "    return fn(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n",
      "    return self.dispatch_shell(stream, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 235, in dispatch_shell\n",
      "    handler(stream, idents, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n",
      "    user_expressions, allow_stdin)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 196, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 533, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2698, in run_cell\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2802, in run_ast_nodes\n",
      "    if self.run_code(code, result):\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2862, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-1-e7358ae15db2>\", line 2, in <module>\n",
      "    import matplotlib.pyplot as plt\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py\", line 69, in <module>\n",
      "    from matplotlib.backends import pylab_setup\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/matplotlib/backends/__init__.py\", line 14, in <module>\n",
      "    line for line in traceback.format_stack()\n",
      "\n",
      "\n",
      "  matplotlib.use(touse)\n",
      "/anaconda3/lib/python3.6/site-packages/backtrader/plot/plot.py:127: UserWarning: \n",
      "This call to matplotlib.use() has no effect because the backend has already\n",
      "been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n",
      "or matplotlib.backends is imported for the first time.\n",
      "\n",
      "The backend was *originally* set to 'module://ipykernel.pylab.backend_inline' by the following code:\n",
      "  File \"/anaconda3/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n",
      "    \"__main__\", mod_spec)\n",
      "  File \"/anaconda3/lib/python3.6/runpy.py\", line 85, in _run_code\n",
      "    exec(code, run_globals)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py\", line 16, in <module>\n",
      "    app.launch_new_instance()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n",
      "    app.start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 477, in start\n",
      "    ioloop.IOLoop.instance().start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/ioloop.py\", line 177, in start\n",
      "    super(ZMQIOLoop, self).start()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/ioloop.py\", line 888, in start\n",
      "    handler_func(fd_obj, events)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 277, in null_wrapper\n",
      "    return fn(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n",
      "    self._handle_recv()\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n",
      "    self._run_callback(callback, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n",
      "    callback(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/tornado/stack_context.py\", line 277, in null_wrapper\n",
      "    return fn(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n",
      "    return self.dispatch_shell(stream, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 235, in dispatch_shell\n",
      "    handler(stream, idents, msg)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n",
      "    user_expressions, allow_stdin)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 196, in do_execute\n",
      "    res = shell.run_cell(code, store_history=store_history, silent=silent)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 533, in run_cell\n",
      "    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2698, in run_cell\n",
      "    interactivity=interactivity, compiler=compiler, result=result)\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2802, in run_ast_nodes\n",
      "    if self.run_code(code, result):\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2862, in run_code\n",
      "    exec(code_obj, self.user_global_ns, self.user_ns)\n",
      "  File \"<ipython-input-1-e7358ae15db2>\", line 2, in <module>\n",
      "    import matplotlib.pyplot as plt\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py\", line 69, in <module>\n",
      "    from matplotlib.backends import pylab_setup\n",
      "  File \"/anaconda3/lib/python3.6/site-packages/matplotlib/backends/__init__.py\", line 14, in <module>\n",
      "    line for line in traceback.format_stack()\n",
      "\n",
      "\n",
      "  matplotlib.use('nbagg')\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nPTfeeKP5Ptavf9kRgrM62UNRFO6++26WL1/uOrHKFYcjZfbJJzeWenFSRSx0Kqnw7r67k9tKqzLn\ncy3lUhSDW9a5c13X09mctomKWAymKEo9DL5ktwPXiUgKGJQ3UMOYrDZw0uK0f41xzuL/tRNfIVwx\n+5izs7NJTk6u9HKysrLcKic9PZ2tW7cSHR3N6NGjufnmmzl69Chjx47l9ddfp7CwkPz8fJ5++mma\nNWvGsWPHWLBgAdWrVyc0NJQbbriB5ORk/vzzT5YvX05xcTGNGjVi7NixHD16lJdffhl/f38CAgKY\nN2+eW7KfOHGC22+/nddee40mTZpw4MABMjIyrMoBqF+/PmPHjuW1115jy5YttGrVivvvv5/27dub\n63/27Fn+/PNP8vLy8PX1ZcuWLbzyyit8+umnBAYGUqdOHbp3784rr7wCGD4Inn/+eT7++GOOHTtG\nmzZteOyxx3j77beZMWMGy5cvtylr06ZN3HPPPZw4cQKNRmO+7llZWXz44Yc2eV+6dImZM2ei1WoR\nEebNm8cvv/zCZ599RkBAAC1atGDYsGFW12T58uW89tpr5ryLi4vJyckx/y4oKODRRx+lVatWZGRk\ncNttt5GebnDreurUKd544w0WLFjAmTNneO211ygsLCQgIIAJEyYQGhpK9erVmTNnDjfddJNb96i0\nuPs8VjbXohzLltXl0KEbKSiwdiNZUKDl0KFinnrqH4YOPVGuvPLycCuv3FwtI0e25vTpQHMeGRl+\nvPhiMR98kEuXLql8+20tLl3yJTS0kH79TjF48L8EBho+Nt94oxN5eX52887Lg4ULC4iP3+JWXUxk\nZWXx/febbeSy931rr54dO2qpWdP6XEfyObhGUYqiWBrteFdErHoQiqIEA2uBsSJyyck0sL0DUob4\nikFErojQtm1bqQqSkpLcShcXFycnT54UEZHOnTvLp59+aj6WlZUlIiK7du2SO+64Q0REevXqJb/9\n9puIiDzyyCMya9YsKS4ulpYtW0pGRoYkJSXJqFGj5Pvvv5f58+fL+++/LyIixcXFbss+efJk+fjj\nj2XOnDmycOFCWbJkicybN8+qHBExl3Po0CG588477dZ/yJAhsnXrVhERGT16tLz11luybt06admy\npRQWFoqISO/eveXXX38VEZGpU6fKokWLRESkYcOG5vw6d+4sKSkpNmXt2rVLRo0aZSW3pQz28l61\n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\nX3/9tfTp00eGDRsmIiLFxcVSWFgoIiJHjhyRdu3aOZWhZ8+esnXrVhERGTRokGzatElERBISEmT5\n8uVWaY8dOyYJCQlWcabrXpIzZ87I4MGDrY4PGTJE9uzZ41CWEydOSF5enoiILFq0SB588EEREenf\nv78kJyeLiMj06dNl8eLFNuc6ksOSBx54QBISEsz39eDBg+ZjAwYMkJ9//tkqfXp6upw9e1ZEDM9V\nly5dREQkPz/fnOb999+X5557zqasJ554Qt58803z7127dsmpU6ds0u3atUv69u1rdV179uwpp0+f\ntluHpKQkyc7OdviM2suvMvD08Km3yCBSCXKcPi0SECBicPIoYmwzzW1nSkrlll9KcDGUDRwHdgN/\nAb9bxI8GDgB7gQXO8vBUuGp6zGvXrmXt2rU2vy3jShIZGWkTXGHPs5Qler2epKQknjSarNNqtbzw\nwgssX77cJu3atWu5806DH+6AgAAiIiJclm8iLCyMyZMns3LlSsDQW9HpdLRp04avvvoKMNjmPnfu\nHACbNm1i2DCDm9BevXqxevVqmzxXrlzJI488Yv49ffp0s+vJDz74ANPiO71ez6JFi3jqqafMaTUa\nDT4+Bguvly5d4tZbb3Uo+/nz5zl27BgdO3YE4K+//iI2NhaA3r17mz1pucNff/3FSxYu6GbNmsXE\niRPNv4uLi9mzZw+vvPIKcXFxLF682CaPG2+8EX9/f8BgFlWr1QIGM6vp6ekAXLx4kRo1arglk6Uf\n7d9++42aNWtSp04dc1zjxo3Nf/v5+Zmvm4nq1auby/L19TUf97Pozdi7xnq9np9//tnqvtxyyy1c\nf/31/PDDD3z00Ufm+JkzZzJp0iTz7xMnTpCTk8OYMWPQ6XR235tq1ao5fEZL5qdyBVKrFgwdatNr\nBqg1ciTUtOcPwuuJF5FWYrSprShKPAZ3jLeKSHPgZY9K54Cryla2PcXqaBivPEyaNInExET69etn\nc+z8+fPUqFEDS7ebdevW5dSpU3ZlCwoq+6LCG264wZzv4sWLCQoKIjU1lbi4OPr27cvQoUP58MMP\nee6551i6dCkjRowAoEmTJuzevdsmv7y8PAICAsy/g4KCyDPayrVU2MuXL+fee++1SguG4fhBgwZx\n8OBBli5d6lDujz/+mIEDB5p/Ww6rh4WFsW/fPptz/vjjD7sG81u1akWrVq0AOHToEFlZWVYK69y5\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11c4b00b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "[[<matplotlib.figure.Figure at 0x11c4b00b8>]]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = SignalData(dataname=price)\n",
    "cerebro = bt.Cerebro(cheat_on_open=True)\n",
    "cerebro.addstrategy(RandomForestStrategy)\n",
    "cerebro.adddata(data, name=ticker)\n",
    "cerebro.broker.setcash(10000.0)\n",
    "cerebro.broker.setcommission(commission=0.0003)\n",
    "\n",
    "cerebro.addanalyzer(btanalyzers.SharpeRatio, _name=\"sharpe\")\n",
    "cerebro.addanalyzer(btanalyzers.DrawDown, _name=\"drawdown\")\n",
    "cerebro.addanalyzer(btanalyzers.Returns, _name=\"returns\")\n",
    "\n",
    "print('the beigin value is {:.2f}'.format(cerebro.broker.getvalue()))\n",
    "\n",
    "back = cerebro.run()\n",
    "\n",
    "print('the end value is {:.2f}'.format(cerebro.broker.getvalue()))\n",
    "\n",
    "\n",
    "par_list = [[x.analyzers.returns.get_analysis()['rtot'],\n",
    "             x.analyzers.returns.get_analysis()['rnorm100'],\n",
    "             x.analyzers.drawdown.get_analysis()['max']['drawdown'],\n",
    "             x.analyzers.sharpe.get_analysis()['sharperatio']\n",
    "            ]for x in back\n",
    "]\n",
    "par_df = pd.DataFrame(par_list, columns=['Total returns', 'APR', 'drawdown', 'sharperatio'])\n",
    "print(par_df)\n",
    "cerebro.plot(style='candle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
